package com.hyyt.shopjsp.settlement.service;


import com.hyyt.shopjsp.settlement.pojo.ShopSettlementDetail;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * SHOP_店铺申请结算明细 Service接口
 *  LC
 */
public interface IShopSettlementDetailService {

    /**
     * 保存SHOP_店铺申请结算明细
     *
     * @param shopSettlementDetail SHOP_店铺申请结算明细
     * @return 保存后的SHOP_店铺申请结算明细
     */
    void saveShopSettlementDetail(ShopSettlementDetail shopSettlementDetail);

    /**
     * 更新SHOP_店铺申请结算明细
     *
     * @param shopSettlementDetail SHOP_店铺申请结算明细
     * @return 更新后的SHOP_店铺申请结算明细
     */
    void updateShopSettlementDetail(ShopSettlementDetail shopSettlementDetail);

    /**
     * 删除指定ID的SHOP_店铺申请结算明细
     *
     * @param id SHOP_店铺申请结算明细ID
     */
    void deleteShopSettlementDetail(Integer id);

    /**
     * 删除指定ID集合的SHOP_店铺申请结算明细
     *
     * @param ids SHOP_店铺申请结算明细ID集合
     */
    void deleteShopSettlementDetail(Collection<Integer> ids);

    /**
     * 根据ID加载一个SHOP_店铺申请结算明细
     *
     * @param id SHOP_店铺申请结算明细ID
     * @return SHOP_店铺申请结算明细
     */
    ShopSettlementDetail loadShopSettlementDetail(Integer id);

    /**
     * 查询所有的SHOP_店铺申请结算明细，通常有最多取30000条记录的限制
     *
     * @return 所有的SHOP_店铺申请结算明细，通常有最多取30000条记录的限制
     */
    List<ShopSettlementDetail> queryAllShopSettlementDetail();

    /**
     * 查询SHOP_店铺申请结算明细
     *
     * @param params 查询参数，为key-value形式
     * @return SHOP_店铺申请结算明细集合
     */
    List<ShopSettlementDetail> queryShopSettlementDetail(Map<String, Object> params);

    /**
     * 查询SHOP_店铺申请结算明细
     *
     * @param params   查询参数，没有则传null,分页参数key为“sortColumns”
     * @param startRow 起始行数（不含起始行的数据）
     * @param rowSize  要查询记录数
     * @return SHOP_店铺申请结算明细集合
     */
    List<ShopSettlementDetail> queryShopSettlementDetail(Map<String, Object> params, int startRow, int rowSize);

    /**
     * 统计SHOP_店铺申请结算明细
     *
     * @param params 查询参数，没有则传null,分页参数key为“sortColumns”
     * @return 结果集记录数
     */
    int countShopSettlementDetail(Map<String, Object> params);

    /**
     * 更新SHOP_店铺申请结算明细
     *
     * @param params：settlementId、status
     * @return 更新后的SHOP_店铺申请结算明细
     */
    void updateShopSettlementDetailStatus(Map<String, Object> params);

    /**
     * 更新SHOP_店铺申请结算明细
     *
     * @param params：settlementId、paymentInfo
     * @return 更新后的SHOP_店铺申请结算明细
     */
    void updateShopSettlementDetailPaymentInfo(Map<String, Object> params);

    /**
     * 根据店铺结算ID查询未结算订单列表
     */
    List<Map<String,Object>> querySettlementOrdersBySettlementId(Map<String, Object> params, int startRow, int rowSize);

    /**
     * 根据店铺结算ID查询未结算订单数量
     */
    int countSettlementOrdersBySettlementId(Map<String, Object> params);

}
